#ifndef PICCOLO_VK_COMMAND_BUFFER_H
#define PICCOLO_VK_COMMAND_BUFFER_H

#include "PiccoloVKCommon.h"

namespace Piccolo
{
    class PiccoloVKDevice;

    class PiccoloVKCommandPool
    {
    public:
        PiccoloVKCommandPool(PiccoloVKDevice* device, uint32_t queueFamilyIndex);
        ~PiccoloVKCommandPool();

        static void BeginCommandBuffer(VkCommandBuffer commandBuffer);
        static void EndCommandBuffer(VkCommandBuffer commandBuffer);

        std::vector<VkCommandBuffer> AllocateCommandBuffer(uint32_t count) const;
        VkCommandBuffer AllocateSingleCommandBuffer() const;
        VkCommandPool GetCommandPool() const { return mCommandPool; }

    private:
        VkCommandPool mCommandPool;

        PiccoloVKDevice* mDevice;
    };
}

#endif